package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main() {
	//map是一种无序的基于 key-value的数据结构，Go语言中的map是引用类型，必须初始化才能使用。
	var m1 map[string]int         //
	fmt.Println(m1 == nil)        // 还没有初始化（没有在内存中开辟空间）
	m1 = make(map[string]int, 10) //要估算好map容量，避免程序运行期间动态扩容
	m1["理想"] = 18
	m1["jiwuming"] = 35
	fmt.Println(m1)
	fmt.Println(m1["理想"])
	v, ok := m1["娜扎"]
	// 约定ok 接收bool值 // 如果不存在key拿到的是0值
	if !ok {
		fmt.Println(v)
	} else {
		fmt.Println(v)
	}
	// 删除
	delete(m1, "理想")
	fmt.Println(m1)
	rand.Seed(time.Now().UnixNano())
	// 元素类型为map的切片
	var s1 = make([]map[int]string, 1, 10)
	// 没有对内部的map做初始化
	s1[0] = make(map[int]string, 1)
	s1[0][100] = "A"
	fmt.Println(s1)
	// 值为切片类型的map
	var m2 = make(map[string][]int, 10)
	m2["北京"] = []int{10, 20, 30}
	fmt.Println(m2)
}
